package com.haredot.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.haredot.entity.SvipConfig;
import com.haredot.mapper.SvipConfigMapper;
import com.haredot.service.SVipService;
import com.haredot.vo.R;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.Map;
import java.util.Objects;

@Service
@Transactional(rollbackFor = Exception.class)
public class SVipServiceImpl extends ServiceImpl<SvipConfigMapper, SvipConfig> implements SVipService {

    @Override
    public R<?> saveSvipConfig(SvipConfig svipConfig) {

        SvipConfig config = this.baseMapper.selectOne(new QueryWrapper<SvipConfig>().eq("name", svipConfig.getName()));

        // 如果 该 套餐存在
        if (config != null) return R.fail(R.StatusCode.BAD).data(Map.of("name", "套餐名已经存在"));

        // 如果该套餐 不存在，则添加数据
        boolean save = this.save(svipConfig);

        return save ? R.ok().build() : R.fail().build();
    }

    @Override
    public R<?> updateSvipConfig(SvipConfig svipConfig) {

        SvipConfig config = this.baseMapper.selectOne(new QueryWrapper<SvipConfig>().eq("name", svipConfig.getName()));

        // 如果 该 套餐存在
        if (config != null && !Objects.equals(config.getId(), svipConfig.getId())) return R.fail(R.StatusCode.BAD).data(Map.of("name", "套餐名已经存在"));

        // 如果该套餐 不存在，则添加数据
        boolean save = this.updateById(svipConfig);

        return save ? R.ok().build() : R.fail().build();
    }
}
